list_a = list("abcdefghig")

#使用索引访问列表中的某个元素
print(list_a[3])  #使用正数索引
print(list_a[-4])  #使用负数索引

#使用切片访问列表中的一组元素
print(list_a[3:8])
print(list_a[:8])
print(list_a[3:])
print(list_a[3:8:2])
print(list_a[-6:-1])
print(list_a[::-1])


print('---------------------------')


language = ["Python", "C++", "Java"]
birthday = [1991, 1998, 1995]
info = language + birthday
print("language:", language)
print("birthday:", birthday)
print("info:", info)

print("----------------------------")

list1 = list("qwer1234")
print(list1[1])
print((list1[5]))
print(list1[2:6])
print(list1[1:9:2])
print(list1[-8:-1])

print('----------------------------')


a = ["q",2,"r"]
b = [12,23,45]
info = a + b #直接在尾部相加
print(a)
print(b)
print(info)


print('----------------------------')

a = [1,2,3]
a.append([4,5])#在末尾增加，且保留列表括号
print(a)
a.append(4)
print(a)

print('----------------------------')

a = [1,2,"3"]
a.extend('a')#表示到添加到列表末尾的数据，它可以是单个元素，也可以是列表、元组等，但不能是单个的数字。
print(a)

b = (["a","c","c"])
a.extend(b)
print(a)

print('----------------------------')

a =  ['Python', 'C++', 'Java']
a.insert(1,'c')#将元素插入指定位置进行增加
print(a)

b = ('C#', 'Go')
a.insert(2,b)
print(a)

c = ['C#', 'Go']
a.insert(1,c)
print(a)

print('----------------------------')
a =  ['Python', 'C++', 'Java']
print(a*3)

print('----------------------------')
nums = [40, 36, 89, 2, 36, 100, 7]
a = nums.pop(3)
print(a)
print(nums)
b = nums.pop()
print(b)
print(nums)

print("----------------------------")
a=[1,2,3,4,5,6,7,8,"qw"]
del a[4]
print(a)
del a[-4]
print(a)
del a[1:4]
print(a)

print('----------------------------')
a=[1,2,3,4,5,6,7,8,"qw"]
a.pop(3)
print(a)
a.pop(-4)
print(a)

print('----------------------------')

a=[1,2,3,4,5,6,8,8,"qw"]
a.remove(8)
print(a)
a.remove(1)
print(a)

print('----------------------------')

a=[1,2,3,4,5,6,7,8,"qw"]
a.clear()
print(a)

print("----------------------------")

a=[1,2,3,4,5,6,7,8,"qw"]
a[0] = 4
a[4] = 8
print(a)

print('----------------------------')
a=[1,2,3,4,5,6,7,8,"qw"]
a[1:4]=[5,6,0,7,8]
print(a)
a[1:4]=[0]
print(a)

b = ["qwert"]
b[2:5] = "Hallo"
print(b)

print('----------------------------')

nums = [40, 36, 89, 2, 36, 100, 7]
#步长为2，为第1、3、5个元素赋值
nums[1: 6: 2] = [0.025, -99, 20.5]#使用切片语法时也可以指定步长（step 参数），但这个时候就要求所赋值的新元素的个数与原有元素的个数相同
print(nums)

print('----------------------------')

a=[1,2,3,4,5,6,7,8,"qw"]

print(a.index(2))
print(a.index(7,4))
print(a.index(6,1,8))

print('----------------------------')

a=[1,2,3,4,5,6,7,8,1,1,"qw"]
print(a.count(1))

print('----------------------------')
a=[1,2,3,4,5,6,7,8,"qw"]
for i in a:
    print(i*2)
print('----------------------------')

a=[1,2,3,4,5,6,7,8,"qw"]
print(enumerate(a))
for index, i in enumerate(a):
    print(f"{index}:{i}")

print("----------------------------")#列表排序

#语法格式：sorted(iterable[,key=None][,reverse=False])
#- iterable表示可迭代对象，在这里就是列表名
#- key为可选参数，如果指定了该参数，会使用该参数的**方法**进行排序

x = [1, 5, 2, 3, 4]  # 创建列表并赋值
y = sorted(x)  # 将x中的元素升序排序后赋给变量y
print(x)
print(y)
z = sorted(x, reverse=True) # 将x中的元素降序排序后赋给变量z;reverse=True：这是一个可选参数，用于指定排序的顺序。当 reverse 参数的值为 True 时，表示进行降序排序
print(z)


a = [5,7,6,8,1,4,6,7]
print(sorted(a))
print(sorted(a, reverse= True))

#sort用于对原列表进行排序（默认为升序排序），排序后的新列表会**覆盖原列表**。
#语法格式:list.sort([key=None][,reverse=False])
a = [5,7,6,8,1,4,6,7]
a.sort()
print(a)
a.sort(reverse=True)
print(a)

a = [5,7,6,8,1,4,6,7]
a.reverse()
print(a)















